From 90f61d351e6387bd52464db24644e10de1ec6524 Mon Sep 17 00:00:00 2001 From: Aleksey Kladov Date: Wed, 17 Aug 2016 22:20:09 +0300 Subject: [PATCH] Add current_package to the Context --- src/cargo/ops/cargo_rustc/context.rs | 8 ++++++-- src/cargo/ops/cargo_rustc/job_queue.rs | 2 +- src/cargo/ops/cargo_rustc/mod.rs | 6 +++--- 3 files changed, 10 insertions(+), 6 deletions(-) diff --git a/src/cargo/ops/cargo_rustc/context.rs b/src/cargo/ops/cargo_rustc/context.rs index 49236afea..03c0b0d18 100644 --- a/src/cargo/ops/cargo_rustc/context.rs +++ b/src/cargo/ops/cargo_rustc/context.rs @@ -29,6 +29,7 @@ pub struct Unit<'a> { pub struct Context<'a, 'cfg: 'a> { pub config: &'cfg Config, pub resolve: &'a Resolve, + pub current_package: PackageId, pub compilation: Compilation<'cfg>, pub packages: &'a PackageSet<'cfg>, pub build_state: Arc, @@ -74,10 +75,13 @@ impl<'a, 'cfg> Context<'a, 'cfg> { let engine = build_config.exec_engine.as_ref().cloned().unwrap_or({ Arc::new(Box::new(ProcessEngine)) }); + let current_package = try!(ws.current()).package_id().clone(); + assert_eq!(¤t_package, resolve.root()); Ok(Context { host: host_layout, target: target_layout, resolve: resolve, + current_package: current_package, packages: packages, config: config, target_info: TargetInfo::default(), @@ -274,7 +278,7 @@ impl<'a, 'cfg> Context<'a, 'cfg> { /// Returns the appropriate directory layout for either a plugin or not. pub fn layout(&self, unit: &Unit) -> LayoutProxy { - let primary = unit.pkg.package_id() == self.resolve.root(); + let primary = unit.pkg.package_id() == &self.current_package; match unit.kind { Kind::Host => LayoutProxy::new(&self.host, primary), Kind::Target => LayoutProxy::new(self.target.as_ref() @@ -704,7 +708,7 @@ impl<'a, 'cfg> Context<'a, 'cfg> { } pub fn show_warnings(&self, pkg: &PackageId) -> bool { - pkg == self.resolve.root() || pkg.source_id().is_path() || + pkg == &self.current_package || pkg.source_id().is_path() || self.config.extra_verbose() } } diff --git a/src/cargo/ops/cargo_rustc/job_queue.rs b/src/cargo/ops/cargo_rustc/job_queue.rs index 92d72135a..a0cb1ddde 100644 --- a/src/cargo/ops/cargo_rustc/job_queue.rs +++ b/src/cargo/ops/cargo_rustc/job_queue.rs @@ -199,7 +199,7 @@ impl<'a> JobQueue<'a> { } let build_type = if self.is_release { "release" } else { "debug" }; - let profile = cx.lib_profile(cx.resolve.root()); + let profile = cx.lib_profile(&cx.current_package); let mut opt_type = String::from(if profile.opt_level == "0" { "unoptimized" } else { "optimized" }); if profile.debuginfo { diff --git a/src/cargo/ops/cargo_rustc/mod.rs b/src/cargo/ops/cargo_rustc/mod.rs index f0811e03c..b36ed3ceb 100644 --- a/src/cargo/ops/cargo_rustc/mod.rs +++ b/src/cargo/ops/cargo_rustc/mod.rs @@ -81,7 +81,7 @@ pub fn compile_targets<'a, 'cfg: 'a>(ws: &Workspace<'cfg>, }) }).collect::>(); - let root = try!(packages.get(resolve.root())); + let root = try!(ws.current()); let mut cx = try!(Context::new(ws, resolve, packages, config, build_config, profiles)); @@ -229,7 +229,7 @@ fn rustc(cx: &mut Context, unit: &Unit) -> CargoResult { let do_rename = unit.target.allows_underscores() && !unit.profile.test; let real_name = unit.target.name().to_string(); let crate_name = unit.target.crate_name(); - let move_outputs_up = unit.pkg.package_id() == cx.resolve.root(); + let move_outputs_up = unit.pkg.package_id() == &cx.current_package; let rustc_dep_info_loc = if do_rename { root.join(&crate_name) @@ -504,7 +504,7 @@ fn build_base_args(cx: &Context, let prefer_dynamic = (unit.target.for_host() && !unit.target.is_custom_build()) || (crate_types.contains(&"dylib") && - unit.pkg.package_id() != cx.resolve.root()); + unit.pkg.package_id() != &cx.current_package); if prefer_dynamic { cmd.arg("-C").arg("prefer-dynamic"); } -- 2.30.2